## Propósito del Script: se muestran los resultados de un análisis de profesionales 
## en las encuestas realizadas a los FRE. 
##
## Copyright (c) Fondo Nacional de Estupefacientes, 2021 
## 
## Email: dsparra@minsalud.gov.co 
require(plotly)
## Loading required package: plotly
## Loading required package: ggplot2
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
require(tidyverse); theme_set(theme_bw())
## Loading required package: tidyverse
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v tibble  3.1.3     v dplyr   1.0.7
## v tidyr   1.1.3     v stringr 1.4.0
## v readr   2.0.0     v forcats 0.5.1
## v purrr   0.3.4
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks plotly::filter(), stats::filter()
## x dplyr::lag()    masks stats::lag()
require(lubridate)
## Loading required package: lubridate
## 
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
require(patchwork)
## Loading required package: patchwork
source(file.path('src', 'data', '901_funcionesMapa.R'), encoding = 'UTF-8')
## Loading required package: sf
## Linking to GEOS 3.9.0, GDAL 3.2.1, PROJ 7.2.1
source(file.path('src', 'visualization', '901_funcionesBarras.R'), encoding = 'UTF-8')
source(file.path('src', 'models', '900_funcionesAlmacenamientoGrafico.R'), encoding = 'UTF-8')

# 1. Lectura de datos base ------------------

# 
df <- read_csv(file.path('data', 'processed', '001_Herramienta_Procesada.csv'))
## Rows: 16 Columns: 184
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr  (166): Nombre del encuestador, Nombre del funcionario que recibe la enc...
## dbl    (8): 3.01 Existencias actuales de recetarios en el FRE, 3.03 Tiempo d...
## lgl    (7): Si la respuesta a la pregunta anterior fue "otro", indique cual:...
## dttm   (3): Marca temporal, Fecha de la visita, Fecha creación FRE
## 
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
df <- df %>% 
  mutate(Profesion = ifelse(`Profesión del funcionario a cargo del FRE` != 'Otro', 
                            `Profesión del funcionario a cargo del FRE`, 
                            `Si la respuesta a la pregunta anterior fue "otro", indique cual:...17`)) 

df$`Profesión del personal de apoyo (1)` <- 
  map2_chr(df$`Profesión del personal de apoyo (1)`,
     df$`Si la respuesta a la pregunta anterior fue "otro", indique cual:...22`,
     function(x, y) {ifelse(x != 'Otro', x, y)})
df$`Profesión del personal de apoyo (2)` <- 
  map2_chr(df$`Profesión del personal de apoyo (2)`,
           df$`Si la respuesta a la pregunta anterior fue "otro", indique cual:...27`,
           function(x, y) {ifelse(x != 'Otro', x, y)})
df$`Profesión del personal de apoyo (3)` <- 
  map2_chr(df$`Profesión del personal de apoyo (3)`,
           df$`Si la respuesta a la pregunta anterior fue "otro", indique cual:...32`,
           function(x, y) {ifelse(x != 'Otro', x, y)})
df$`Profesión del personal de apoyo (4)` <- 
  map2_chr(df$`Profesión del personal de apoyo (4)`,
           df$`Si la respuesta a la pregunta anterior fue "otro", indique cual:...37`,
           function(x, y) {ifelse(x != 'Otro', x, y)})
df$`Profesión del personal de apoyo (5)` <- 
  map2_chr(df$`Profesión del personal de apoyo (5)`,
           df$`Si la respuesta a la pregunta anterior fue "otro", indique cual:...42`,
           function(x, y) {ifelse(x != 'Otro', x, y)})


df <- df %>% rowwise() %>% 
  mutate(Profesiones = list(c_across(matches('Profesión\\sdel\\s(personal|funcionario)'))))

# 2. Perfiles profesionales en el FRE ------------------

perfilProfesional1 <- df$Profesion %>% 
  table() %>% as_tibble() %>% 
  rename(Profesion = '.') %>% 
  barrasGraficoRev(Profesion, n,
                'Perfil profesional encargado del FRE', 
                'Frecuencia') +
  theme(panel.grid = element_blank())

perfilProfesional1

guardarGGplot(perfilProfesional1, '020_perfilProfesionalEncargado', 6, 4)

# No todo los FRE tienen un encargado con profesión de Químico Farmacéutico

df_Total <- df %>% 
  right_join(colombiaGeoDF, by = c('CodigoDepartamento' = 'DPTO'))

mapaProfesional1 <- df_Total %>% 
  ggplot() + 
  geom_sf(aes(geometry = geometry, fill = Profesion)) + 
  # coord_sf(crs = st_crs(32618)) + 
  labs(title = 'Profesión del encargado en el FRE') + 
  theme(axis.text = element_blank(), panel.grid = element_blank())

mapaProfesional1

guardarGGplot(mapaProfesional1, '021_mapaProfesional', 8, 6)

# Con apoyos
perfilProfesional2 <- df$Profesiones %>% unlist() %>% 
  table() %>% as_tibble() %>% 
  rename(Profesiones = '.') %>% 
  barrasGraficoRev(Profesiones, n, 'Perfiles profesionales en FRE (encargados y apoyos)',
                xlab = 'Frecuencia') +
  theme(panel.grid = element_blank())

perfilProfesional2

guardarGGplot(perfilProfesional2, '022_perfilProfesional2', 8, 6)

# 3. ¿Cuantas personas trabajan en el FRE?------------------

df_Total$NoPersonas <- df_Total$Profesiones %>% 
  map_dbl(function(x){sum(!is.na(x))})

perfilProfesional3 <- df_Total %>% 
  select(NoPersonas) %>% table() %>% as_tibble() %>% 
  ggplot(aes(x = ., y = n)) + 
  geom_text(aes(label = n, y = n + 1)) + 
  geom_bar(stat = 'identity', fill = '#6699ff', color = 'black', alpha = 0.6) + 
  ylab('Frecuencia') + xlab('No personas en el FRE') +
  theme_bw() +
  labs(title = 'Conteo de personas que trabajan por FRE')+
  theme(panel.grid = element_blank())

perfilProfesional3

guardarGGplot(perfilProfesional3, '023_perfilProfesional3', 6, 4)

# N. personas en el FRE

mapaProfesional2 <- df_Total %>% 
  ggplot() + 
  geom_sf(aes(geometry = geometry, fill = NoPersonas)) + 
  coord_sf(datum = NA) + 
  # coord_sf(crs = st_crs(32618)) + 
  scale_fill_continuous(type = 'viridis') + 
  labs(title = 'N.° personas en el FRE') + 
  theme(axis.text = element_blank()) +
  theme(panel.grid = element_blank())

mapaProfesional2

guardarGGplot(mapaProfesional2, '024_mapaProfesional2', 8, 6)

# 4. ¿modalidad de contratación de personal?------------------

df_Total <- df_Total %>% rowwise() %>% 
  mutate(ModalidadContratacion = list(c_across(matches('Tipo de vinculación'))))

# Todo el personal de todos los departamentos
dfContratacion <- df_Total$ModalidadContratacion %>%  unlist() %>% 
  str_replace(., 'De [P|p]lanta|No aplica', NA_character_) %>% 
  table() %>% as_tibble() 

pieProfesional1 <- dfContratacion %>%
  mutate(prop = n / sum(n),
         ncumsum = cumsum(prop) - 0.5 * prop) %>%
  ggplot(aes(x = "", y = prop,  fill = .)) +
  geom_bar(stat="identity", width=1) +
  coord_polar("y", start=0) + 
  theme_void() +
  theme(legend.position="bottom") +
  geom_text(aes(y = ncumsum, label = .), color = "white", size=4) +
  scale_fill_discrete()

pieProfesional1

guardarGGplot(pieProfesional1, '025_pieProfesional1', 5, 5)


pieProfesional2 <- dfContratacion %>% 
  plot_ly(labels = ~., values = ~n, type = 'pie', 
          textinfo = 'label+percent',
          marker = list(line = list(color = '#FFFFFF', width=1)), 
          showlegend = FALSE) 

pieProfesional2
guardarPlotly(pieProfesional2, '026_pieProfesional2', libdir = 'plotly')